home *** CD-ROM | disk | FTP | other *** search
- rollout WobbleRollOut "Wobble" rolledUp:true (
- local _name
- local _RollOut
-
- ---------------------------------------------------------------
- -- init GUI
- ---------------------------------------------------------------
- include "$scripts\\pteroTools\\_propGroupUI.ms"
- label lblAngl "Angle:" offset:[9,0] align:#left across:2
- label lblSpd "Speed:" offset:[-7,0] align:#right
- spinner spnAnglX "X:" range:[0, 360, 0] type:#float FieldWidth:35 offset:[-5,0] align:#left across:3
- angle angAnglX "" range:[0, 360, 0] dir:#ccw diameter:17 offset:[-5,0] align:#center color:(color 255 255 0)
- spinner spnSpdX "X:" range:[0, 999, 0] type:#float FieldWidth:35 offset:[5,0]
- spinner spnAnglY "Y:" range:[0, 360, 0] type:#float FieldWidth:35 offset:[-5,0] align:#left across:3
- angle angAnglY "" range:[0, 360, 0] dir:#ccw diameter:17 offset:[-5,0] align:#center color:(color 255 255 0)
- spinner spnSpdY "Y:" range:[0, 999, 0] type:#float FieldWidth:35 offset:[5,0]
- spinner spnAnglZ "Z:" range:[0, 360, 0] type:#float FieldWidth:35 offset:[-5,0] align:#left across:3
- angle angAnglZ "" range:[0, 360, 0] dir:#ccw diameter:17 offset:[-5,0] align:#center color:(color 255 255 0)
- spinner spnSpdZ "Z:" range:[0, 999, 0] type:#float FieldWidth:35 offset:[5,0]
-
- ---------------------------------------------------------------
- -- Init RollOut
- ---------------------------------------------------------------
- fn fnKeyNames = #( _name )
- fn fnKeyUI = #( #( spnAnglX, spnAnglY, spnAnglZ, spnSpdX, spnSpdY, spnSpdZ ) )
- fn fnAngUI = #( #( angAnglX, angAnglY, angAnglZ ) )
- fn fnKeyDef = #( #( 0, 0, 0, 0, 0, 0) )
- fn fnUpdateAng keyIDX:1 angUI:#(#()) keyUI:#(#()) c:3 = for n = 1 to c do try ( angUI[keyIDX][n].degrees = keyUI[keyIDX][n].value ) catch ()
- fn fnName = "Wobble"
- fn fnRollOut = WobbleRollOut
- fn fnInitRollOut = (
- local _name = fnName()
- local _RollOut = fnRollOut()
- fnAppendRollOut _RollOut _name
- )
-
-
- ---------------------------------------------------------------
- -- fnApply()
- ---------------------------------------------------------------
- fn fnApply obj keyIDX read write del acq acqObj def sav = (
- local keyNames = fnKeyNames()
- local keyUI = fnKeyUI()
- local angUI = fnAngUI()
- local keyDef = if def then #( ( fnGetDefs keyNames[keyIDX] ) ) else fnKeyDef()
- local keyArray = #()
-
- if del do fnDeleteProp obj keyNames[keyIDX] ---- DELETE
-
- if sav do ---- SAVE DEFAULT
- try (
- for n = 1 to 6 do keyDef[keyIDX][n] = keyUI[keyIDX][n].value
- fnSetDefs ( keyNames[keyIDX] as string ) ( keyDef[keyIDX] as string )
- return true
- ) catch ( print ( "Error: " + _name + ".fnApply() - save" ); return false )
-
- keyArray = if acq then fnReadProp acqObj keyNames[keyIDX] else fnReadProp obj keyNames[keyIDX] ---- ACQUIRE
-
- if read or acq or del or def do ( ---- READ
- for n = 0 to 5 do
- if ( keyArray[(_firstValue + n)] == "" ) or ( keyArray[(_firstValue + n)] as string == "undefined" ) or def then
- try (
- keyUI[keyIDX][(n+1)].value = keyDef[keyIDX][(n+1)]
- ) catch ( print ( "Error: " + _name + ".fnApply() - read - default" ); return false )
- else
- try (
- keyUI[keyIDX][(n+1)].value = keyArray[(_firstValue + n)] as float
- ) catch ( print ( "Error: " + _name + ".fnApply() - read - properties" ); return false )
- fnUpdateAng angUI:angUI keyUI:keyUI
- if read or del do return true
- )
-
- if write do ---- WRITE
- try (
- keyArray[_keyName] = keyNames[keyIDX]
- del = true
- for n = 0 to 5 do (
- keyArray[(_firstValue + n)] = keyUI[keyIDX][n+1].value as string
- if keyUI[keyIDX][n+1].value > 0 do del = false
- )
-
- if del then fnDeleteProp obj keyNames[keyIDX] else fnWriteProp obj keyArray
- return true
- ) catch ( print ( "Error: " + _name + ".fnApply() - write" ); return false )
- )
-
- ---------------------------------------------------------------
- -- fnUpdate()
- ---------------------------------------------------------------
- fn fnUpdate keyIDX:1 read:false write:false del:false acq:false acqObj:undefined def:false sav:false = (
- if not write do write = btnAuto.checked
- for obj in selection do fnApply obj keyIDX read write del acq acqObj def sav
- )
-
- ---------------------------------------------------------------
- -- Event Handler
- ---------------------------------------------------------------
- on angAnglX changed value do ( spnAnglX.value = value; fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
- on spnAnglX changed value do ( angAnglX.degrees = value; fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
- on angAnglY changed value do ( spnAnglY.value = value; fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
- on spnAnglY changed value do ( angAnglY.degrees = value; fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
- on angAnglZ changed value do ( spnAnglZ.value = value; fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
- on spnAnglZ changed value do ( angAnglZ.degrees = value; fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
- on spnSpdX changed value do ( fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
- on spnSpdY changed value do ( fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
- on spnSpdZ changed value do ( fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
- on btnSet pressed do ( fnUpdate write:true; fnGetPropsToShow(); fnPrintLabel() )
- on btnDef pressed do ( fnUpdate def:true; fnGetPropsToShow(); fnPrintLabel() )
- on btnSav pressed do ( fnUpdate sav:true; fnGetPropsToShow(); fnPrintLabel() )
- on btnDel pressed do ( fnUpdate del:true; fnGetPropsToShow(); fnPrintLabel() )
- on btnAcq changed state do ( fnAcquire _RollOut; fnGetPropsToShow(); fnPrintLabel() )
- on WobbleRollOut open do (
- _name = fnName()
- _RollOut = fnRollOut()
- fnOpenRollOut _RollOut
- )
- on WobbleRollOut close do fnCloseRollOut _RollOut
- )
-